const path = require("path")
// 引入js打包工具
const UglifyJsPlugin = require("uglifyjs-webpack-plugin")
const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin")

const resolve = dir => {
    return path.join(__dirname, dir)
}
// 项目部署基础
module.exports = {
    // 打包路径
    outputDir: "dist",
    // 打包路径--线上部署文件地址
    // outputDir: '../../crmeb/public/admin',
    runtimeCompiler: true,
    productionSourceMap: false, //关闭生产环境下的SourceMap映射文件
    // 如果你不需要使用eslint，把lintOnSave设为false即可
    lintOnSave: false,
    // 打包优化
    configureWebpack: config => {
        const pluginsPro = []
        pluginsPro.push(
            // js文件压缩
            new UglifyJsPlugin({
                uglifyOptions: {
                    compress: {
                        drop_debugger: true,
                        drop_console: true, //生产环境自动删除console
                        pure_funcs: ["console.log"], //移除console
                    },
                },
                sourceMap: false,
                parallel: true, //使用多进程并行运行来提高构建速度。默认并发运行数：os.cpus().length - 1。
            })
        )
        if (process.env.NODE_ENV === "production") {
            config.plugins = [...config.plugins, ...pluginsPro]
        }
    },
    css: {
        loaderOptions: {
            scss: {
                sassOptions: {
                    silenceDeprecations: ["legacy-js-api"],
                },
            },
        },
    },
    chainWebpack: config => {
        config.plugins.delete("prefetch")
        config.resolve.alias
            .set("@", resolve("src")) // key,value自行定义，比如.set('@@', resolve('src/components'))
            .set("_c", resolve("src/components"))
        config.module
            .rule("vue")
            .test(/\.vue$/)
            .end()
        // 重新设置 alias
        config.resolve.alias.set("@api", resolve("src/api"))
        // node
        config.node.set("__dirname", true).set("__filename", true)
        config.plugin("monaco").use(new MonacoWebpackPlugin())
    },

    // 设为false打包时不生成.map文件
    productionSourceMap: false,
    // 这里写你调用接口的基础路径，来解决跨域，如果设置了代理，那你本地开发环境的axios的baseUrl要写为 '' ，即空字符串
    devServer: {
        port: 1617, // 端口
        // proxy: {
        //     "^/admin": {
        //         target: "http://laoyu-ppsc.amtf/",
        //         changeOrigin: true,
        //         pathRewrite: {
        //           '^/api': 'adminapi' // 路径重写：去掉请求URL中的 "/api" 前缀（按需配置）
        //         },
        //     },
        //     // "/kefuapi": {
        //     //     target: "http://laoyu-ppsc.amtf/",
        //     //     changeOrigin: true,
        //     //     // pathRewrite: {
        //     //     //   '^/api': '' // 路径重写：去掉请求URL中的 "/api" 前缀（按需配置）
        //     //     // },
        //     // },
        //     // "^/ws": {
        //     //   target: "http://laoyu-ppsc.amtf/",
        //     //   changeOrigin: true,
        //     //   ws: true
        //     // }
        // },
    },
    publicPath: "/admin",
    assetsDir: "system_static",
    indexPath: "index.html",
}
